package com.example.personal.aiagent.chat.commonservice;

import com.example.personal.aiagent.common.util.TimeUtil;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Optional;
import java.util.concurrent.*;

/**
 * 聊天池
 */
@Component
@Slf4j
public class ChatPool {
    /**
     * 最大连接聊天数
     */
    private static final int MAX_CONNECTED_CHAT = 1;

    /**
     * 用户聊天map，key：用户名，value：聊天map
     * TODO: 1. 删除或修改用户前需校验此map； 2.用户修改聊天认证信息时需校验此map. 3. 定期删除过期数据
     */
    private HashMap<String, ChatService> userChatMap = new HashMap<>();

    /**
     * 插入用户聊天信息，如果有就不插入
     *
     * @param userName 用户名
     * @param chatService 聊天服务
     */
    public void insertUserChat(String userName, ChatService chatService) {
        if (!userChatMap.containsKey(userName)) {
            userChatMap.put(userName, chatService);
        }
    }

    /**
     * 获得聊天服务
     *
     * @param userName 用户名
     * @return 聊天服务
     */
    public Optional<ChatService> getChatService(String userName) {
        return Optional.ofNullable(userChatMap.get(userName));
    }

    /**
     * 删除聊天服务，如果没有也不报错
     *
     * @param userName 用户名
     */
    public void deleteUserChat(String userName) {
        userChatMap.remove(userName);
    }
}
